package com.ruoyi.system.service.impl;

import java.util.List;

import cn.hutool.core.util.ObjectUtil;
import cn.hutool.crypto.SecureUtil;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.system.domain.Account;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.YyAdminMapper;
import com.ruoyi.system.domain.YyAdmin;
import com.ruoyi.system.service.IYyAdminService;
import com.ruoyi.common.core.text.Convert;

/**
 * 管理员Service业务层处理
 *
 * @author ruoyi
 * @date 2025-03-25
 */
@Service
public class YyAdminServiceImpl implements IYyAdminService
{
    @Autowired
    private YyAdminMapper yyAdminMapper;

    /**
     * 查询管理员
     *
     * @param id 管理员主键
     * @return 管理员
     */
    @Override
    public YyAdmin selectYyAdminById(Long id)
    {
        return yyAdminMapper.selectYyAdminById(id);
    }

    /**
     * 查询管理员列表
     *
     * @param yyAdmin 管理员
     * @return 管理员
     */
    @Override
    public List<YyAdmin> selectYyAdminList(YyAdmin yyAdmin)
    {
        return yyAdminMapper.selectYyAdminList(yyAdmin);
    }

    /**
     * 新增管理员
     *
     * @param yyAdmin 管理员
     * @return 结果
     */
    @Override
    public int insertYyAdmin(YyAdmin yyAdmin)
    {
        String md5 = SecureUtil.md5(yyAdmin.getPassword());
        yyAdmin.setPassword(md5);
        YyAdmin admin = yyAdminMapper.selectByUsername(yyAdmin.getUsername());
        if (ObjectUtil.isNull(admin)){
            return yyAdminMapper.insertYyAdmin(yyAdmin);
        }else {
            throw new ServiceException("用户已存在");
        }

    }

    /**
     * 修改管理员
     *
     * @param yyAdmin 管理员
     * @return 结果
     */
    @Override
    public int updateYyAdmin(YyAdmin yyAdmin)
    {
        if (yyAdmin.getPassword() != null){
            String md5 = SecureUtil.md5(yyAdmin.getPassword());
            yyAdmin.setPassword(md5);
        }
        return yyAdminMapper.updateYyAdmin(yyAdmin);
    }

    /**
     * 批量删除管理员
     *
     * @param ids 需要删除的管理员主键
     * @return 结果
     */
    @Override
    public int deleteYyAdminByIds(String ids)
    {
        return yyAdminMapper.deleteYyAdminByIds(Convert.toStrArray(ids));
    }

    /**
     * 删除管理员信息
     *
     * @param id 管理员主键
     * @return 结果
     */
    @Override
    public int deleteYyAdminById(Long id)
    {
        return yyAdminMapper.deleteYyAdminById(id);
    }

    @Override
    public YyAdmin login(Account account) {
        YyAdmin admin = yyAdminMapper.selectByUsername(account.getUsername());
        if (ObjectUtil.isNull(admin)){
            throw new RuntimeException("用户不存在");
        }
        String password = account.getPassword();
        String md5 = SecureUtil.md5(password);
        if (!md5.equals(admin.getPassword())){
            throw new RuntimeException("密码错误");
        }
        return admin;
    }

}
